iT邦幫忙

2023 iThome 鐵人賽

DAY 8
0
自我挑戰組

一個營建系學生的韌體之路-自走車篇系列 第 8

【AMR_Day8】ROS2 & DOCKER

  • 分享至 

  • xImage
  •  

今天來介紹跟多使用DOCKER安裝ROS2的血淚史

DOCKER

docker
Docker是一個開源的軟體平台,可用來快速的開發、測試和發布應用程式,目標是提供一個快速且輕量的虛擬化方案。
p.s. 另外一個虛擬化技術是VM (Virtual Machine虛擬機器),是基於你的實體主機電腦上,再提供另外一台虛擬化的電腦。Docker則提供一個容器Container(虛擬化的作業系統),優點就是對系統資源的使用率很高、容器的啟動速度快、基本不消耗額外的系統資源。因為我兩者皆有學習過,拿出來做個比較一下加深印象,具體的感受差異就是VM的前置作業很多,很耗費電腦容量,運行速度又很慢,反觀Docker只要一個指令run一下就有虛擬環境可以用了。

來源:amazon/docker

Docker架構

Docker architecture
來源:Docker overview

一起來看看Docker架構包含的物件:

1. Image映像檔

映像檔是一個唯讀模板,內容是建構一個Container的說明。可以自己寫Dockerfile來建立一個映像檔,也以直接使用別人在Docker Hub註冊的映像檔。
p.s. 自己對映像檔理解是在小時候還有拿光碟來灌windows這件事~

2. Container容器

映像檔執行後就會生成一個容器,可以被啟動、開始、停止、刪除,各個都是獨立的,同時間可以開啟數個,再依需求連接到網路、儲存空間或使用者權限等等。

3. Repository 倉庫

倉庫是存放映像檔的地方,Docker Hub就是一個公開的倉庫,也可以建立私人倉庫等等。透過指令docker push/pull能從Docker Hub或私人倉庫中使用指定的映像檔。

osrf/ros

ROS官方有將各個版本的ROS1、ROS2上傳至Docker Hub osrf/ros,能依照自身需求pull。

docker pull osrf/ros   //預設為最新板
docker pull osrf/ros:foxy-desktop  //foxy

https://ithelp.ithome.com.tw/upload/images/20230923/20140433HNyIgnQvAm.png

docker-compose up

如果想同時開啟兩個容器,可以撰寫docker-compose.yml

version: '2'

services:
  talker:
    image: osrf/ros:foxy-desktop
    command: ros2 run demo_nodes_cpp talker
  listener:
    image: osrf/ros:foxy-desktop
    command: ros2 run demo_nodes_cpp listener
    depends_on:
      - talker

接著在該檔案位置的terminal下指令

docker-compose up

GUI

昨天分享了一種在ubuntu桌面版透過docker使用GUI的其中一種方法,但為了成功使用GUI,我又再次走過了許許多多的歪路!
明日待續。


上一篇
【AMR_Day7】安裝ROS2
下一篇
【AMR_Day9】 關於GUI的歪路
系列文
一個營建系學生的韌體之路-自走車篇30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言